En los inicios de la Ingeniería de Software, el desarrollo de software se realizaba libremente, pero con el tiempo se han ido descubriendo y desarrollando nuevos modelos y estándares[1], con base a los cuales se puedan resolver las problemáticas modernas. A estos, se les ha denominado arquitectura de software, porque, a semejanza de los planos de un edificio o construcción, estas indican la estructura, funcionamiento e interacción entre las partes del software. En el libro "An introduction to Software Architecture", David Garlan y Mary Shaw definen que la arquitectura es un nivel de diseño que hace foco en aspectos "más allá de los algoritmos y estructuras de datos de la computación; el diseño y especificación de la estructura global del sistema es un nuevo tipo de problema".